
const CompressionPlugin = require('compression-webpack-plugin');
module.exports = {
    // 基本路径
    publicPath: './',
    // 输出文件目录
    outputDir: 'dist',
    // 用于嵌套生成的静态资产（js，css，img，fonts）的目录。
    assetsDir: 'static',
    // 以多页模式构建应用程序。
    pages: {
        index: {
            entry: "src/main.js", //配置入口js文件
            template: "public/index.html", //主页面
            filename: "index.html", //打包后的html文件名称
            title: "", //打包后的.html中<title>标签文本内容
        },
    },
    // eslint-loader 是否在保存的时候检查
    lintOnSave: false,
    // 是否使用包含运行时编译器的Vue核心的构建。
    runtimeCompiler: false,
    // 默认情况下babel-loader忽略其中的所有文件node_modules。
    transpileDependencies: ["element"],
    // webpack配置
    chainWebpack: (config) => {
        // 修复热更新失效
        config.resolve.symlinks(true); 
        //图片压缩
        config.module
            .rule("images")
            .use("image-webpack-loader")
            .loader("image-webpack-loader")
            .options({
                mozjpeg: {progressive: true,quality: 50}, 
                optipng: {enabled: true}, 
                pngquant: {quality: [0.5, 0.65],speed: 4}, 
                gifsicle: {interlaced: false},
            })
            .end()
            .enforce('post');

        //js、css压缩
        config.plugin('compressionPlugin')
            .use(new CompressionPlugin({
                test:/\.js$|\.html$|.\css/, // 匹配文件名
                threshold: 5120, // 对超过5k的数据压缩
                deleteOriginalAssets: false // 不删除源文件
            }))
        
    },
    configureWebpack: {
        //关闭 webpack 的性能提示
        performance: {
		    hints:false
	    },

        //压缩gzip
        plugins: [
            new CompressionPlugin({
                algorithm: 'gzip',
                test: /\.(js|css)$/, // 匹配文件名
                threshold: 10240, // 对超过10k的数据压缩
                deleteOriginalAssets: false, // 不删除源文件
                minRatio: 0.8 // 压缩比
            })
        ]

    },
    // 生产环境sourceMap
    productionSourceMap: false,
    // css相关配置
    css: {
        requireModuleExtension: true,
        // 是否使用css分离插件
        extract: true,
        // 开启 CSS source maps?
        sourceMap: false,
        // css预设器配置项
        loaderOptions: {},
    },
    // webpack-dev-server 相关配置
    devServer: {
        host: '0.0.0.0',
        port: 8080,
        https: false,
    },
    // 是否为 Babel 或 TypeScript 使用 thread-loader。
    parallel: require('os').cpus().length > 1,
    // 第三方插件配置
    pluginOptions: {
        // ...
    },
}